<?php


/********************* 3.7 验证日期 *******************/

//问题：检查一个日期是否合法。希望确保用户不会提供一个类似 1962-02-30 的日期

// 解决方案 : checkdate()

// $ok 为 true - 1993-3-10 为一个合法的日期
$ok = checkdate(3, 10, 1993);

// $notOk 为 false - 1993-3-10 不是一个合法的日期
$notOk = checkdate(2, 30, 1962);


// 讨论
// 检查用户是否在 18-122岁之间

function checkBirthDay($month, $day, $year)
{
    $min_age = 18;
    $max_age = 122;

    if (!checkdate($month, $day, $year)) {
        return false;
    }

    $now = new DateTime();
    $thenFo = sprintf("%d-%d-%d", $year, $month, $day);
    $then = DateTime::createFromFormat("Y-n-j|", $thenFo);
    $age = $now->diff($then);
    if (($age->y < $min_age) || ($age->y > $max_age)) {
        return false;
    }
    return true;
}

$res = checkBirthDay(12,3,1974);


/**************************** 3.8 ****************************/